/*
Copyright (c) Microsoft Open Technologies, Inc.
All Rights Reserved
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.

See the Apache 2 License for the specific language governing permissions and limitations under the License.
*/

apply plugin: 'java'
apply plugin: 'maven'

// Needed to keep Android happy
sourceCompatibility = '1.6'

repositories {
    mavenLocal()
    maven { url "http://thaliartifactory.cloudapp.net/artifactory/libs-snapshot" }
    maven { url "http://thaliartifactory.cloudapp.net/artifactory/libs-release" }
    maven { url 'http://files.couchbase.com/maven2/' }
    mavenCentral()
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.5'
    compile 'org.bouncycastle:bcprov-jdk15on:1.49'
    compile 'org.bouncycastle:bcpkix-jdk15on:1.49'
    compile 'org.apache.httpcomponents:httpclient:4.2.5' // Version used in Android 4.3
    compile 'org.ektorp:org.ektorp:1.4.2-SNAPSHOT'
    compile 'com.couchbase.lite:java-core:1.0.0-beta3rc1'
    compile 'com.couchbase.lite:java-listener:1.0.0-beta3rc1'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.3.2'
    compile 'org.apache.commons:commons-lang3:3.3.1'

    testCompile 'junit:junit:4.11'
    testCompile 'org.slf4j:slf4j-simple:1.7.5'
}

def mavenPath() {
    artifactory_local == "true" ?
            'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath :
            artifactory_contextUrl + "/libs-release-local"
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: mavenPath()) {
                authentication(userName: "${artifactory_user}", password: "${artifactory_password}")
            }

            pom.version = "0.0.2"
            pom.groupId = 'com.msopentech.thali'
            pom.artifactId = 'ThaliUtilitiesUniversal'
            pom.project {
                licenses {
                    license {
                        name 'Apache 2.0'
                        url 'https://thali.codeplex.com/SourceControl/latest#license.txt'
                        distribution 'repo'
                    }
                }
            }
        }
    }
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.java.srcDirs
}

task generateJavadocs(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    source = sourceSets.main.java.srcDirs
}

artifacts {
    archives sourcesJar
    archives generateJavadocs
}

/**
 * Sigh... o.k. so I can't figure out how to enumerate the contents of a resource directory in a jar in
 * Android. And since I'm editing the contents of this directory all the time this is a problem. So my hacky
 * solution is to generate a manifest of the directory's contents and then read that in Android at run
 * time so I know what files to load.
 */
task generateXhrTestManifest() {
    def xhrtestPath = "src/main/resources/xhrtest/"
    def manifestFile = file(new File(xhrtestPath + "manifest.csv"))
    if (manifestFile.exists()) {
        assert manifestFile.delete()
    }

    def xhrDirectoryFile = file(new File(xhrtestPath))

    def fileList = ""
    xhrDirectoryFile.listFiles().each {File file ->
        fileList += file.getName() + ","
    }
    println("FileList = " + fileList)
    assert manifestFile.createNewFile()
    manifestFile.write(fileList)
}

compileJava.dependsOn generateXhrTestManifest